package com.example.stuwork.service;

import com.example.stuwork.common.Result;
import com.example.stuwork.pojo.QuizSubmission;

import java.util.List;
import java.util.Map;

/**
 * 测试提交服务接口
 */
public interface QuizSubmissionService {
    
    /**
     * 提交测试答案
     *
     * @param submission 提交信息
     * @return 提交结果
     */
    Result<?> submitQuiz(QuizSubmission submission);
    
    /**
     * 根据测试ID获取提交列表
     *
     * @param quizId 测试ID
     * @return 提交列表的结果
     */
    Result<List<QuizSubmission>> getSubmissionsByQuizId(Long quizId);
    
    /**
     * 根据学生ID获取提交记录
     *
     * @param studentId 学生ID
     * @return 提交记录的结果
     */
    Result<List<QuizSubmission>> getSubmissionsByStudentId(String studentId);
    
    /**
     * 获取学生的测试提交结果
     *
     * @param quizId 测试ID
     * @param studentId 学生ID
     * @return 提交结果
     */
    Result<QuizSubmission> getStudentSubmission(Long quizId, String studentId);
    
    /**
     * 计算测试得分
     *
     * @param submissionId 提交记录ID
     * @return 计算结果
     */
    Result<?> calculateScore(Long submissionId);
    
    /**
     * 获取测试的统计信息
     *
     * @param quizId 测试ID
     * @return 统计信息
     */
    Result<Map<String, Object>> getQuizStats(Long quizId);
    
    /**
     * 判断学生是否已提交测试
     *
     * @param quizId 测试ID
     * @param studentId 学生ID
     * @return 判断结果
     */
    Result<Boolean> isSubmitted(Long quizId, String studentId);
} 